// // 试编写在带头结点的单链表 L 中删除一个最小值结点的高效率算法
// // （假设最小值结点是唯一的）。
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
// //节点结构
// typedef struct LinkNode {
//     int data;
//     struct LinkNode* next;
// }LinkNode;
// //链表结构
// typedef struct LinkList {
//     LinkNode* head;
// }LinkList;
// //链表初始化
// LinkList* LinkInit() {
//     LinkList* list=(LinkList*)malloc(sizeof(LinkList));
//     list->head=(LinkNode*)malloc(sizeof(LinkNode));
//     list->head->next=NULL;
//     return list;
// }
//
// // 插入节点到链表尾部
// void LinkInsert(LinkList* list,int data) {
//     LinkNode* newNode=(LinkNode*)malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=NULL;
//     LinkNode* current=list->head;
//     while (current->next!=NULL) {
//         current=current->next;
//     }
//     current->next=newNode;
// }
// //头插法
// void LinkHeadInsert(LinkList* list,int data) {
//     LinkNode* newNode=malloc(sizeof(LinkNode));
//     if(newNode==NULL) {
//         perror("malloc");
//     }
//     newNode->data=data;
//     newNode->next=list->head->next;
//     list->head->next=newNode;
// }
//
// //打印链表
// void printLinkList(LinkList* list) {
//     LinkNode* current=list->head->next;
//     while(current!=NULL) {
//         printf("%d ",current->data);
//         current=current->next;
//     }
//     printf("\n");
// }
//
// //删除最小值（假设唯一）
// void Delet(LinkList* L) {
//     if(L->head->next==NULL) {
//         perror("L");
//         printf("\n");
//         printf("链表为空，无法删除");
//         return;
//     }
//     LinkNode* p=L->head->next;
//     LinkNode* pre=L->head;
//     LinkNode* minp=p;
//     LinkNode* minpre=pre;
//     while (p!=NULL) {
//         if(p->data<minp->data) {
//             minp=p;
//             minpre=pre;
//         }
//         pre=p;
//         p=p->next;
//     }
//     minpre->next=minp->next;
//     free(minp);
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList* list = LinkInit();
//
//     // 插入数据到链表
//     LinkInsert(list, 5);
//     LinkInsert(list, 3);
//     LinkInsert(list, 8);
//     LinkInsert(list, 1);
//     LinkInsert(list, 7);
//
//     printf("原始链表: ");
//     printLinkList(list);
//
//     // 删除最小值节点
//     Delet(list);
//
//     printf("删除最小值节点后的链表: ");
//     printLinkList(list);
//
//     // 释放链表内存
//     LinkNode* current = list->head;
//     while (current != NULL) {
//         LinkNode* next = current->next;
//         free(current);
//         current = next;
//     }
//     free(list);
//
//     return 0;
// }